package com.test18.ratelimiter;

import com.google.common.util.concurrent.RateLimiter;

/**
 * 总结：
 *    1.main模拟同时有10000个请求来执行task()
 *    2.也就是同时有10000个线程暂停在了acquire()，所以线程获取令牌的时间逐渐递增
 */
public class RateLimiterDemo2 {
	public static RateLimiter create = RateLimiter.create(3);
	public static void main(String[] args) {
		//模拟同时有1万个请求进来,每个请求都是来调用task()方法
		for (int i = 0; i < 10000; i++) {
			new TaskThread(i).start();
		}
		System.out.println("10000个请求发出");
	}
	
	public static void task(int id){
		long start = System.currentTimeMillis();
		create.acquire();
		long end = System.currentTimeMillis();
		System.out.println("本次获取令牌时间："+(end-start));
		
		
		System.out.println(id+":被执行");
	}

}
